package licode.unisop.single.user.infrastructure.assembler;

import licode.unisop.single.user.application.entity.*;
import licode.unisop.single.user.domain.aggregate.entity.RealmsEntity;
import licode.unisop.single.user.infrastructure.repository.po.*;
import org.mapstruct.Mapper;

import licode.unisop.single.user.application.entity.RealmPlatformGrantEntity;
import licode.unisop.single.user.infrastructure.repository.po.RealmPlatformGrantPO;

import java.util.List;

/**
 * uni-user-single
 *
 * @author licode
 * @date 2016-08-27 15:28:34
 */
@Mapper(componentModel = "spring")
public interface UniUserSingleAssembler {

    RealmPlatformGrantPO fromRealmPlatformGrantEntity(RealmPlatformGrantEntity source);
    RealmPlatformGrantEntity fromRealmPlatformGrant(RealmPlatformGrantPO source);
    List<RealmPlatformGrantPO> fromRealmPlatformGrantEntity(List<RealmPlatformGrantEntity> source);
    List<RealmPlatformGrantEntity> fromRealmPlatformGrant(List<RealmPlatformGrantPO> source);

    RealmPlatGroupPO fromRealmPlatGroupEntity(RealmPlatGroupEntity source);
    RealmPlatGroupEntity fromRealmPlatGroup(RealmPlatGroupPO source);
    List<RealmPlatGroupPO> fromRealmPlatGroupEntity(List<RealmPlatGroupEntity> source);
    List<RealmPlatGroupEntity> fromRealmPlatGroup(List<RealmPlatGroupPO> source);

    RealmAssetPO fromRealmAssetEntity(RealmAssetEntity source);
    RealmAssetEntity fromRealmAsset(RealmAssetPO source);
    List<RealmAssetPO> fromRealmAssetEntity(List<RealmAssetEntity> source);
    List<RealmAssetEntity> fromRealmAsset(List<RealmAssetPO> source);

    ProviderPO fromProviderEntity(ProviderEntity source);
    ProviderEntity fromProvider(ProviderPO source);
    List<ProviderPO> fromProviderEntity(List<ProviderEntity> source);
    List<ProviderEntity> fromProvider(List<ProviderPO> source);

    RealmsPO fromRealmsEntity(RealmsEntity source);
    RealmsEntity fromRealms(RealmsPO source);
    List<RealmsPO> fromRealmsEntity(List<RealmsEntity> source);
    List<RealmsEntity> fromRealms(List<RealmsPO> source);

    UserAuthPO fromUserAuthEntity(UserAuthEntity source);
    UserAuthEntity fromUserAuth(UserAuthPO source);
    List<UserAuthPO> fromUserAuthEntity(List<UserAuthEntity> source);
    List<UserAuthEntity> fromUserAuth(List<UserAuthPO> source);

    UserAccountPO fromUserAccountEntity(UserAccountEntity source);
    UserAccountEntity fromUserAccount(UserAccountPO source);
    List<UserAccountPO> fromUserAccountEntity(List<UserAccountEntity> source);
    List<UserAccountEntity> fromUserAccount(List<UserAccountPO> source);

    UserPO fromUserEntity(UserEntity source);
    UserEntity fromUser(UserPO source);
    List<UserPO> fromUserEntity(List<UserEntity> source);
    List<UserEntity> fromUser(List<UserPO> source);

    PropsPO fromPropsEntity(PropsEntity source);
    PropsEntity fromProps(PropsPO source);
    List<PropsPO> fromPropsEntity(List<PropsEntity> source);
    List<PropsEntity> fromProps(List<PropsPO> source);
}
